Esta página explica paso a paso cómo compilar FreeCAD 0.19 o más reciente en Windows. Para otras plataformas ver Compilación.
La compilación de FreeCAD en Windows requiere varias herramientas y bibliotecas.
In the following we describe source code handling using the TortoiseGit frontend. This frontend integrates directly into Windows file explorer and has a large user community to get help in case you have problems.
Ahora puedes obtener el código fuente de FreeCAD:
When using the Git frontend TortoiseGit:
https://github.com/FreeCAD/FreeCAD.git
and click OK.
The latest source code will be downloaded from the FreeCAD Git repository and the folder will be tracked by Git.
To create a local tracking branch and download the source code, open a terminal (command prompt) and switch there to the directory you want the source, then type:
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git
The default (recommended) compiler is MS Visual Studio (MSVC). Though it may be possible to use other compilers, for example gcc via Cygwin or MinGW, it is not tested or covered here.
You can get a free version of MSVC (for individual usage) by downloading the Community edition of MS Visual Studio.
For those who want to avoid installing the huge MSVC for the mere purpose of having a compiler, see CompileOnWindows - Reducing Disk Footprint.
Note: Although the Community edition of MSVC is free, to use the IDE for more than a 30-day trial period you must create a Microsoft account. If you will only compile using the command line, you don't need the IDE and thus no Microsoft account.
As a free and OpenSource alternative IDE you can use KDevelop. You can use KDevelop to modify and write C++ code but must use the command line to compile.
Optionally you can include the paths to some folders to the system PATH variable. This is helpful if you want to access programs in these folders from the command line/powershell or if you want special programs to be found by the compiler or CMake. Besides this, adding folders to the PATH might be necessary if you did not use the corresponding options when installing the program.
C:\Program Files\CMake\bin to the PATH.
C:\Program Files\TortoiseGit\bin to the PATH.
To add folder paths to the PATH variable:
Once you have all of the necessary tools, libraries, and FreeCAD source code, you are ready to begin the configuration and compilation process. This process will proceed in five steps:
First, configure the build environment using CMake:
Note: It is important to specify the correct bit variant. If you have the 64-bit variant of the LibPack you must also use the x64 compiler.
This will begin the configuration and will fail because of missing settings. This is normal, you have not yet specified the location of the LibPack. However, there are other failures that might occur that require some further action on your part.
If it fails with the message that Visual Studio could not be found, the CMake support in MSVC is not yet installed. To do this:
If it fails with a message about the wrong Python version or missing Python, then:
If there is no error about Visual Studio or Python, everything is fine, but CMake does not yet know all necessary settings. Therefore now:
There should now be no errors. If you continue to encounter errors that you cannot diagnose, visit the Install/Compile forum on the FreeCAD forum website. If CMake proceeded correctly, click on Generate. After this is done you can close CMake and start the compilation of FreeCAD using Visual Studio. However, for the first compilation keep it open in case you want or need to change some options for the build process.
The CMake build system gives you control over some aspects of the build process. In particular, you can switch on and off some features or modules using CMake variables.
Here is a description of some of these variables:
Variable name | Description | Default |
---|---|---|
BUILD_XXX | Build FreeCAD with the component XXX. If you don't want/need to compile e.g. the workbench OpenSCAD, disable the variable BUILD_OPENSCAD. FreeCAD will then not have this workbench.
Note: Some components are required for other components. If you for example uncheck BUILD_ROBOT CMake will inform you that then the component Path cannot be compiled correctly. Therefore check the CMake output after you changed a BUILD_XXX option! |
depends |
BUILD_ENABLE_CXX_STD | The version of the C++ language standard. C++14 is the highest possible for FreeCAD 0.19 while at least C++17 is required for FreeCAD 0.20. See also the note in the section Building with Visual Studio 15 (2017) and 16 (2019) | depends |
BUILD_DESIGNER_PLUGIN | To build the Qt Designer plugin, see this section below | OFF |
BUILD_FLAT_MESH | Necessary to have a build that includes the CreateFlatMesh feature | OFF |
CMAKE_INSTALL_PREFIX | The output folder when building the target INSTALL, see also the section Running and installing FreeCAD | Windows default program installation folder |
FREECAD_COPY_DEPEND_DIRS_TO_BUILD | Copies depending libraries needed to execute the FreeCAD.exe to the build folder. See also the section Running and installing FreeCAD. Note: the options FREECAD_COPY_XXX only appear if the libraries were not already copied. If you only need to upgrade/change to another LibPack version, see the section Updating the LibPack. If you want to bring back the options for some reason, you need to delete all folders in your build folder, except for the LibPack folder. In CMake delete the cache and start as if you compile for the first time. |
OFF |
FREECAD_COPY_LIBPACK_BIN_TO_BUILD | Copies the LibPack binaries needed to execute the FreeCAD.exe to the build folder. See also the section Running and installing FreeCAD. | OFF |
FREECAD_COPY_PLUGINS_BIN_TO_BUILD | Copies Qt's plugin files needed to execute the FreeCAD.exe to the build folder. See also the section Running and installing FreeCAD. | OFF |
FREECAD_LIBPACK_USE | Switch the usage of the FreeCAD LibPack on or off | ON |
FREECAD_LIBPACK_DIR | Directory where the LibPack is | FreeCAD's source code folder |
FREECAD_RELEASE_PDB | Create debug libraries (*.pdb) also for release builds. It doesn't affect the speed (like a real debug build would do) and can be very useful to locate crashes in FreeCAD code. In case FreeCAD crashes a crash.dmp file will be created that can be loaded with MSVC and if you have the corresponding PDB files plus the source code of that version you can debug through the code. Without the PDB files it's not possible to debug the code and all what the debugger shows is the name of the DLL where the crash has occurred. | ON |
FREECAD_USE_MP_COMPILE_FLAG | Adds the /MP (multiprocessor) option to the Visual Studio projects, enabling speedups on multi-core CPUs. This can greatly accelerate builds on modern processors. Note: If you turn off FREECAD_USE_PCH, the compilation can quickly overload your heap space, even if you have 16 GB RAM. |
ON |
FREECAD_USE_PCH | Precompiles the headers in order to save compilation time. | ON |
FREECAD_USE_PYBIND11 | Includes the PyBind11 library. Necessary to have a build that includes the CreateFlatMesh feature. Note: after turning it on you might get a configuration error. Just configure again and the problem should go away. |
OFF |
Depending on your compiler, the process for building FreeCAD will be slightly different. In the following sections known workflows are described. If you are building with Qt Creator, jump to Building with Qt Creator (outdated), otherwise proceed directly:
If you want build from the command line, CMake output will show you the proper command to run (which depends on the configured release directory). But this command will produce a Debug build which does not work on Windows and results in a Numpy import error in FreeCAD (which is a known issue but hard to fix). You need to specify the --config Release option to force a Release build:
cmake --build E:/release --config Release
Please note that setting CMake variables like CMAKE_BUILD_TYPE does not have any effect, only specifying the --config option as shown above works.
This will now take quite a long time.
To compile a ready-to use FreeCAD, compile the target INSTALL, see the section Running and installing FreeCAD.
If you don't get any errors you are done. Congratulations! You can exit MSVC or keep it open.
Important: Since Visual Studio 17.4 you cannot use the code optimization that is on by default for the target SketcherGui. If you do, angle constraints will be misplaced in sketches. To fix this, right-click on this target in the MSVC solution explorer and select the last entry Properties in the context menu. In the appearing dialog go to C/C++ → Optimization and there disable the setting Optimization. Finally build the target ALL_BUILD again.
For a debug build it is necessary that the Python is used that is included in the LibPack. To assure this:
As prerequisite for the debug build, you need to do this:
Now you can compile:
This will now take quite a long time.
If there were no compilation errors, and if the FREECAD_COPY_* options mentioned in the CMake Configuration step above were enabled, you can start the debug build:
This will start the debug build of FreeCAD and you can use the MSVC IDE to debug it.
An English language tutorial that begins with configuration in CMake Gui and continues to the `Build` command in Visual Studio 16 2019 is available unlisted on YouTube at Tutorial: Build FreeCAD from source on Windows 10.
Now FreeCAD can be built
Once complete, it can be run: There are 2 green triangles at the bottom left. One is debug. The other is run. Pick whichever you want.
The steps how to compile from the command line depends on the compiler. For MSVC 2017 the steps are:
msbuild ALL_BUILD.vcxproj /p:Configuration=Release
or
msbuild INSTALL.vcxproj /p:Configuration=Release
These steps can also be automaized. Here is for example a solution for MSVC 2017:
compile-FC install
Instead of calling compile-FC with the option install you can also use debug or release:
debug - compile FreeCAD in debug configuration
release - compile FreeCAD in release configuration
install - compile FreeCAD in release configuration and create an install setup
There are 2 methods to run the compiled FreeCAD:
Method 1: You execute the FreeCAD.exe that you find in your build folder in the subfolder bin
Method 2: You build the target INSTALL
Method 2 is the simpler one because it automatically assures that all libraries needed to run the FreeCAD.exe are in the correct folder. The FreeCAD.exe and the libraries will be output in the folder you specified in the CMake variable CMAKE_INSTALL_PREFIX.
For Method 1 you need to enable the FREECAD_COPY_* options mentioned in the CMake Configuration step above.
When running FreeCAD you may encounter missing DLLs when using certain workbenches or features of workbenches. The error message in FreeCAD's console will not tell you what DLL is missing. To find this out you must use an external tool:
import os os.system(r"~\DependenciesGui.exe")
Note: Instead of the ~ you must specify the full path to the DependenciesGui.exe on your system.
FreeCAD is very actively developed. Therefore its source code changes almost daily. New features are added and bugs are fixed. To benefit from these source code changes, you must rebuild your FreeCAD. This is done in two steps:
When using the Git frontend TortoiseGit:
Finally click OK.
Open a terminal (command prompt) and switch there to your source directory. Then type:
git pull https://github.com/FreeCAD/FreeCAD.git master
where master the the name of the main development branch. If you want to get code from another branch, use its name instead of master.
If a new major version of a third-party dependency like Open Cascade is released, or if a third-party dependency has important bug fixes, a new LibPack is released. You can find the latest version here.
To update your LibPack the following recipe is best practice:
In order to join the FreeCAD development you should compile and install the following tools:
FreeCAD uses Qt as toolkit for its user interface. All dialogs are setup in UI-files that can be edited using the program Qt Designer that is part of any Qt installation and also included in the LibPack. FreeCAD has its own set of Qt widgets to provide special features like adding a unit to input fields and to set preferences properties.
The plugin cannot be loaded by the Qt Designer if it was compiled using another Qt version than the one your Qt Designer/Qt Creator is based on. Therefore the plugin must be compiled together with FreeCAD:
As result you will get the plugin file 'FreeCAD_widgets.dll in the folder
~\src\Tools\plugins\widget\Release
To install the plugin, copy the DLL either to:
Finally (re)start Qt Designer and check its menu Help → Plugins. If the plugin FreeCAD_widgets.dll is listed as being loaded, you can now design and change FreeCAD's .ui files. If not, you must compile the DLL by yourself.
If you prefer using Qt Creator instead of Qt Designer, the plugin file must be placed in this folder:
C:\Qt\Qt5.15.2\Tools\QtCreator\bin\plugins\designer
Then (re)start Qt Creator, switch to the mode Design and then check the menu Tools → Form Editor → About Qt Designer Plugins. If the plugin FreeCAD_widgets.dll is listed as being loaded, you can now design and change FreeCAD's .ui files. If not, you must compile the DLL by yourself.
FreeCAD has the feature to provide preview thumbnails for *.FCStd files. That means that in the Windows file explorer *.FCStd files are shown with a screenshot of the model it contains. To provide this feature, FreeCAD needs to have the file FCStdThumbnail.dll installed to Windows.
The DLL is installed this way:
regsvr32 FCStdThumbnail.dll
So check if it works, assure that in FreeCAD the preferences option Save thumbnail into project file when saving document is enabled and save a model. Then view in Windows Explorer the folder of the saved model using a symbol view. You should now see a screenshot of the model in the folder view.
To compile the FCStdThumbnail.dll
The LibPack comes with a version of Open Cascade that is suitable for general use. However, under some circumstances you may wish to compile against an alternate version of Open Cascade, such as one of their official releases, or a patched fork.
When compiling Open Cascade for FreeCAD note that there is no guarantee that FreeCAD will work with all versions of Open Cascade. Note also that when you are using the Netgen library, you must use the a NetGen version that it approved to compile with the Open Cascade version you like to compile.
To compile:
Variable name | Description | Default |
---|---|---|
3RDPARTY_DIR | The path to 3rdparty components. It is recommended to use the folder as input where your used LibPack is. Explicitly leave this field empty. | empty |
3RDPARTY_DOXYGEN_EXECUTABLE | The path to the executable of the 3rdparty component Doxygen. It is recommended to install Doxygen. CMake will then find it automatically. | empty |
3RDPARTY_FREETYPE_DIR | The path to the necessary 3rdparty component Freetype. It is recommended to use the folder as input where your used LibPack is. | empty |
3RDPARTY_RAPIDJSON_DIR | Only available if USE_RAPIDJSON is used. The path to the 3rdparty component RapidJSON. It is recommended NOT to use an existing LibPack folder as input. You can use the RapidJSOn folder from a LibPack, but copy it to a new folder and use this new folder as input. | empty |
3RDPARTY_TCL_DIR | The path to the necessary 3rdparty component TCL. It is recommended NOT to use an existing LibPack folder as input. Take for example one of these releases, extract it and take this as input folder for CMake. | empty |
3RDPARTY_TK_DIR | The path to the necessary 3rdparty component TK. It is recommended NOT to use an existing LibPack folder as input. Take for example one of these releases, extract it and take this as input folder for CMake. | empty |
3RDPARTY_VTK_DIR | Only available if USE_VTK is used. The path to the necessary 3rdparty component VTK. It is recommended to use the folder as input where your used LibPack is. If you use another folder please assure that you don't use VTK 9.x or newer. | empty |
BUILD_RELEASE_DISABLE_EXCEPTIONS | Disables exception handling for release builds. For FreeCAD you must set it to OFF. | ON |
INSTALL_DIR | The output folder when building the target INSTALL. If the build was successful, take the files from this folder to update your LibPack. | Windows default program installation folder |
INSTALL_DIR_BIN | The output subfolder for the DLL when building the target INSTALL. You must change it to bin | win64/vc14/bin |
INSTALL_DIR_LIB | The output subfolder for the .lib files when building the target INSTALL. You must change it to lib | win64/vc14/lib |
USE_RAPIDJSON | To compile Open Cascade with support for RapidJSON. Enabling this is mandatory in order to get support for the file format glTF. | OFF |
USE_VTK | To compile Open Cascade with support for VTK. Enabling this is optimal. You can use this to build Open Cascade's VTK bridge. | OFF |
To build FreeCAD using the self-compiled Open Cascade, you must do the following:
The LibPack comes with a version of Netgen that will was tested to be build with the Open Cascade version of the LibPack. The problem is that every new release of Netgen changes the API. Also every new release of Open Cascade does the same. Therefore one cannot just easily change the Netgen version.
However, you might build Netgen nevertheless. This is an easy task:
Variable name | Description | Default |
---|---|---|
CMAKE_INSTALL_PREFIX | The output folder when building the target INSTALL. If the build was successful, take the files from this folder to update your LibPack. | C:/netgen |
OpenCasCade_DIR | The path to the CMake files of Open Cascade. If you built Open Cascade as described in the section Compiling Open Cascade you can use the subfolder cmake of there folder you used as INSTALL_DIR. If not, use the subfolder cmake of your LibPack. Note hereby that the LibPack must then already contain a proper Open Cascade build. Independent what folder you use, you must now also create there a subfolder lib and copy in the files freetype.lib and freetyped.lib from your LibPack. | empty |
USE_GUI | set it to OFF | ON |
USE_NATIVE_ARCH | set it to OFF; this is only necessary important to support older CPU that don't have the AVX2 instruction set | ON |
USE_OCC | set it to ON | OFF |
USE_PYTHON | set it to OFF | ON |
USE_SUPERBUILD | set it to OFF | ON |
ZLIB_INCLUDE_DIR | The path to the necessary 3rdparty component zlib. It is recommended to use the folder as input where your used LibPack is. | empty |
ZLIB_LIBRARY_DEBUG | The path to the ZLib file zlibd.lib. It is located in the subfolder lib of your LibPack folder. | empty |
ZLIB_LIBRARY_RELEASE | The path to the ZLib file zlib.lib. It is located in the subfolder lib of your LibPack folder. | empty |
name: CMAKE_DEBUG_POSTFIX, type: string, content: _d
This assures that he file names of the debug libraries get another name than the release libraries and can later not be accidentally exchanged.
To build FreeCAD using the self-compiled Netgen, you must do the following:
See also